package com.hzlj.position.locate.converter;

import com.fz.common.base.converter.ModelDTOConverter;
import com.fz.common.base.core.date.DateUtils;
import com.hzlj.position.locate.common.dto.position.PositionKeyDTO;
import com.hzlj.position.locate.common.dto.positionSysCheck.PositionSysCheckAddDTO;
import com.hzlj.position.locate.common.dto.positionSysCheck.PositionSysCheckQueryResultDTO;
import com.hzlj.position.locate.common.dto.positionSysCheck.PositionSysCheckUpdateDTO;
import com.hzlj.position.locate.common.model.PositionSysCheck;

/**
 * 位置系统核验表(PositionSysCheck)DTO转换类
 *
 * @author makejava
 * @date 2024-08-16 13:47:31
 */
public class PositionSysCheckConverter {
    /**
     * model实例转换为查询结果DTO
     *
     * @param model model实例
     * @return DTO
     */
    public static PositionSysCheckQueryResultDTO from(PositionSysCheck model) {
        return ModelDTOConverter.from(model, PositionSysCheckQueryResultDTO.class);
    }

    /**
     * 新增DTO转换为model实例
     *
     * @param dto 新增DTO
     * @return model实例
     */
    public static PositionSysCheck from(PositionSysCheckAddDTO dto) {
        return ModelDTOConverter.from(dto, PositionSysCheck.class, (PositionSysCheck l) -> {
            l.setUpdateTime(DateUtils.now());
            l.setCreateTime(DateUtils.now());
        });

    }

    /**
     * 修改DTO转换为model实例
     *
     * @param dto 修改DTO
     * @return model实例
     */
    public static PositionSysCheck from(PositionSysCheckUpdateDTO dto) {
        return ModelDTOConverter.from(dto, PositionSysCheck.class, (PositionSysCheck l) -> {
            l.setUpdateTime(DateUtils.now());
        });
    }


    public static PositionSysCheckAddDTO of(String jzId,
                                            PositionKeyDTO oriPosition,
                                            String sysCheckStep,
                                            String sysCheckStepText,
                                            Boolean sysCheckStepResult,
                                            String sysCheckStepResultText) {
        return new PositionSysCheckAddDTO()
                .setJzId(jzId)
                .setOriPositionId(oriPosition.getId())
                .setOriTime(oriPosition.getPositionTime())
                .setSysCheckStep(sysCheckStep)
                .setSysCheckStepText(sysCheckStepText)
                .setSysCheckStepResult(sysCheckStepResult)
                .setSysCheckStepResultText(sysCheckStepResultText)
                ;

    }


    public static PositionSysCheckAddDTO of(String jzId,
                                            PositionKeyDTO oriPosition,
                                            PositionKeyDTO sysCheckPosition,
                                            String sysCheckStep,
                                            String sysCheckStepText,
                                            Boolean sysCheckStepResult,
                                            String sysCheckStepResultText) {
        return new PositionSysCheckAddDTO()
                .setJzId(jzId)
                .setOriPositionId(oriPosition.getId())
                .setOriTime(oriPosition.getPositionTime())
                .setSysCheckPositionId(sysCheckPosition == null ? null : sysCheckPosition.getId())
                .setSysCheckTime(sysCheckPosition == null ? null : sysCheckPosition.getPositionTime())
                .setSysCheckStep(sysCheckStep)
                .setSysCheckStepText(sysCheckStepText)
                .setSysCheckStepResult(sysCheckStepResult)
                .setSysCheckStepResultText(sysCheckStepResultText)
                ;
    }
}
